package com.xjh.basestudy.designmode.behaviorMode.behaviorMode3_ChainOfResponsibility.p2_chain;

/**
 * @Author XuJianHua
 * @Date 2022/10/4 14:37
 * @Description
 *
 * 核心

 */
public abstract class Approver {

    protected String name;// 抽象出审批人的姓名
    protected Approver nextApprover;// 下一位审批人，更高级别领导

    public Approver(String name) {
        this.name = name;
    }

    //这个方法是链式编程的核心所在，入参一位审批人，赋值给该类，并返回该审批人，
    protected Approver setNextApprover(Approver nextApprover) {
        this.nextApprover = nextApprover;
        return this.nextApprover;// 返回下一位审批人，使其支持链式编程
    }

    // 当子类实现approve方法时，如果不通过，直接调用this.nextApprover
    public abstract void approve(int amount);// 抽象审批方法由具体审批人子类实现

}
